package offer2

/*
原题链接:
https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/

剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。

示例 1：
输入：head = [1,3,2]
输出：[2,3,1]
限制：
0 <= 链表长度 <= 10000
*/

// ListNode 链表节点
type ListNode struct {
	Val  int
	Next *ListNode
}

func reversePrint(head *ListNode) []int {
	if head == nil {
		return nil
	}

	n := 0
	cur := head

	for head != nil {
		n++
		head = head.Next
	}

	arr := make([]int, n)
	for i := n - 1; cur != nil; i-- {
		arr[i] = cur.Val
		cur = cur.Next
	}
	return arr
}
